package com.g2room.bigdata.hadoop.demo.wordcount;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;


/**
 * K2  V2  对应的是map输出kv的类型
 * 默认的 partition org.apache.hadoop.mapreduce.lib.partition.HashPartitioner
 *
 * @author zqs
 */
public class WcPartitioner extends Partitioner<Text, IntWritable> {
    @Override
    public int getPartition(Text text, IntWritable intWritable, int numReduceTasks) {
        //numReduceTasks:就是driver里面设置的reduceTask的个数，也就是最终hdfs 中文件的个数
        //如果设置 numReduceTasks 为1，那么无论返回结果是几，最终都写到这一个文件中
        //如果 numReduceTasks 设置正好和返回结果数相等，则正常写，如果大于，则有文件空数据，
        //如果小，则会报错。
        return (text.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
        //return 10;
    }
}
